﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Aprendete.Models
{
    public class InscritoRepository
    {

        private DataClasses1DataContext db = new DataClasses1DataContext();

        public void Add(Inscrito Inscrito)
        {
            db.Inscritos.InsertOnSubmit(Inscrito);
            db.SubmitChanges();
        }


        public void Save()
        {
            db.SubmitChanges();
        }


        public Inscrito GetInscritoxid(int id)
        {
            return db.Inscritos.SingleOrDefault(d => d.InscritosID == id);
        }

        /// <summary>
        /// Metodo que retorna un "inscrito" en caso de que se encuentre que el usuario esta inscrito en una tutoria x
        /// </summary>
        /// <param name="nombreid">id del usuario que buscamos</param>
        /// <param name="tutoid">id de la tutoria en que buscamos</param>
        /// <returns></returns>
        public Inscrito GetInscritosxnombreytuto(int nombreid, int tutoid)
        {
            Inscrito inscr = db.Inscritos.SingleOrDefault(d => (d.UsuarioID == nombreid && d.TutoriaID == tutoid));
            return inscr;
        }

        public bool marcarcomoevaluada(int nombreid, int tutoid)
        {
            try
            {
                Inscrito inscr = db.Inscritos.SingleOrDefault(d => (d.UsuarioID == nombreid && d.TutoriaID == tutoid));
                inscr.Pendiente = false;
                db.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }


        public void Delete(Inscrito Inscrito)
        {
            db.Inscritos.DeleteOnSubmit(Inscrito);
            db.SubmitChanges();
        }


        public List<Inscrito> GetInscripcionesUsuario(int id)
        {
            List<Inscrito> ret = db.Inscritos.ToList();

            int count = ret.Count;
            int resta = 0;
            for (int i = 0; i < count; i++)
            {
                Inscrito I = ret[i - resta];

                if (I.UsuarioID != id)
                {
                    ret.Remove(I);
                    resta++;
                }
 

            }

                return ret;
            
        }

        public List<Tutoria> GetTutoriasxEvaluar(int id)
        {
            List<Tutoria> retorno = new List<Tutoria>();
            TutoriaRepository tr = new TutoriaRepository();
            List<Inscrito> inscripcionesusuario = GetInscripcionesUsuario(id);
            foreach (Inscrito i in inscripcionesusuario)
            {
                if (i.Pendiente)
                {
                    retorno.Add(tr.GetTutoriaxid(i.TutoriaID));
                }
            }
            return retorno;
        }

    }
}